/*
 * wk_vector_types.h
 *
 *  Created on: 2012-3-8
 *      Author: tianmax
 *  定义动态数组结构体
 *
 * 注：
 * 	不允许随意插入元素（根据传统的vector来开发）
 */

#ifndef __WK_VECTOR_TYPES_H__
#define __WK_VECTOR_TYPES_H__

#include "wk_element.h"
#include "wk_types.h"
///**
// * 给Vector数据元素类型起别名
// * 这样做的目的是便于直接将通用Vector变为专用Vetor
// */
//typedef void* WPElement;

/**
 * 定义动态数组结构体
 */
struct wk_vector{
	/*初始大小*/
	wsize_t initsize;
	/*当向量溢出时每次增加的量*/
	wsize_t incrementsize;
	/*实际大小*/
	wsize_t size;
	/*数组元素个数*/
	wsize_t count;
	/*元素比较器*/
	wk_element_comp comp;

	WPElement* data;
	WPElement* current;

};

typedef struct wk_vector WVector;

///**
// * 给比较函数指针类型起别名
// */
//typedef int (*wk_vector_comp)(WPElement data1,WPElement data2);
//
///**
// * 给遍历操作函数指针起别名
// * ctx上下文
// */
//typedef void* (*wk_vector_iterate_do)(WPElement data1,void* ctx);

/**
 * 给遍历器操作函数指针起别名
 */
typedef void* (*wk_vector_iterator)(WVector* vector,wk_element_iterate_do iterate_do,void* ctx);

#endif /* WK_VECTOR_TYPES_H_ */
